1. Field of the Invention
The present invention relates generally to an improved data processing system and in particular to a computer implemented method and apparatus for managing a distributed software application. More particularly, the present invention is directed to a computer implemented method, apparatus, and computer usable program product for utilizing metadata for changing an operational state of software application components distributed over a cluster of virtual and/or physical machines.
2. Description of the Related Art
A distributed software application is a software application that is created from a set of interrelated software components disseminated over two or more physical and/or virtual machines. The software components may be, for example, an operating system, a middleware system, or an application program. In addition, each component may include one or more subcomponents. For example, if a software component is broadly defined as the entire software stack installed on a physical or virtual machine, then that software component may include a subset of software components, such as the operating system and one or more software programs executing on the virtual machine.
Although the use of distributed software applications promotes scalability, the set of software components of the distributed software application are more difficult to manage. These difficulties arise from the sometimes complex dependencies of the various software components. For example, the operation of a second software component may depend upon the operation of a first software component. During a restart process, an attempt to restart a second component of a distributed software application without restarting the first software component may cause an error or prevent the distributed software application from restarting.
Examples of otherwise routine management tasks that are more difficult to perform on distributed software applications include software upgrading, hardware maintenance, service migration, or other similar forms of system administration that requires the changing of an operation state of the distributed software application. The operational state of the distributed software application is a state of operation of the distributed software application. In particular, the state of operation may either be an active state or a suspended state. In an active state, the distributed software application is functional and capable of processing data. In a suspended state, the distributed software application is offline and/or incapable of processing data. Thus, changing an operational state of a distributed software application, may be, for example, suspending an active distributed software application or starting a suspended distributed software application. Because the distributed software application is formed from a set of software components, changing the operational state of the distributed software application involves changing the operational state of the set of software components forming the distributed software application.
Difficulties attributed to changing the operational state of the distributed software application may be attributed to the dependencies of the various software components that form the distributed software application. In addition, software components may be subjected to certain temporal limitations that require those software components to be available at specified times. These dependencies and temporal limitations, as well as other conditions that may exist, complicate the creation of a process for starting and stopping of a distributed software application.
One currently used method for deriving a process for properly stopping and starting a set of components of a distributed software application requires a systems administrator with intimate knowledge of the distributed software application to derive a sequence for stopping and restarting individual software components. This method may be a time consuming process if the distributed software application includes many software components. Furthermore, as a distributed software application is upgraded and modified, dependencies may change, thereby requiring the systems administrator to continually modify the process. This method is inefficient and may lead to costly errors and unnecessary downtime.